home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio 2000
/
Ham Radio 2000.iso
/
ham2000
/
bbs
/
reqzip
/
reqzip.pas
< prev
Wrap
Pascal/Delphi Source File
|
1992-01-23
|
6KB
|
162 lines
program reqzip;
{$M,2048,0,0}
uses dos;
var
requ,messu,vastaus:text;
mrivi,rrivi,otsikko:string;
mailpath,vastpath:string[70];
kutsu:string[6];
f,laskuri:integer;
s:pathstr;
{--------Ohjelmassa ei ole pascalin ajatuksen vastaisesti proseduureja------}
{--------Ajatus on se, että niin ohjelmasta tulisi mahdollisimman vähän-----}
{--------muistia käyttävä T.S. proceduurimuuttujat jäävät pois--------------}
begin
if paramcount<>1 then halt;
{-----------------------------------------------------------------------------}
{Luetaan init.srvstä oikeat polut käyttöön}
assign(messu,'init.srv');
reset(messu);
laskuri:=0;
repeat
begin
readln(messu,rrivi);
if rrivi[1]<>'#' then inc(laskuri)
end;
until laskuri=6;
if rrivi[length(rrivi)]<>'\' then rrivi:=rrivi+'\';
mailpath:=rrivi;
repeat
begin
readln(messu,rrivi);
if rrivi[1]<>'#' then inc(laskuri)
end;
until laskuri=9;
if rrivi[length(rrivi)]<>'\' then rrivi:=rrivi+'\';
vastpath:=rrivi;
close(messu);
{-----------------------------------------------------------------------------}
{Avataan requtiedosto ja haetaan halutut numerot, jotka ovat otsikkorivillä}
{Otsikkorivi on tiedoston toinen rivi. Lähettäjän kutsu ekariviltä ! }
assign(requ,paramstr(1));
reset(requ);
readln(requ,rrivi);
f:=pos('<',rrivi)+1;
kutsu:='';
repeat
begin
inc(f);
if rrivi[f]<>' ' then kutsu:=kutsu+rrivi[f];
end;
until ((rrivi[f]=' ') or (f=length(rrivi)));
readln(requ,otsikko);
close(requ);
{-----------------------------------------------------------------------------}
{Alustetaan vastaus joka on REkutsu. Aletaan hakea viestejä numeron perusteella}
assign(vastaus,vastpath+'!-'+kutsu);
rewrite(vastaus);
repeat
rrivi:='';
laskuri:=1;
begin
{---------------------tyhjät pois numeron edestä --------------------------}
repeat
if otsikko[laskuri]=' ' then inc(laskuri);
until otsikko[laskuri]<>' ';
{--------------------otetaan numero spaceen asti---------------------------}
repeat
if otsikko[laskuri]<>' ' then
begin
rrivi:=rrivi+otsikko[laskuri];
inc(laskuri);
end;
until ((otsikko[laskuri]=' ') or (laskuri=length(otsikko)+1));
otsikko:=copy(otsikko,laskuri,length(otsikko)-laskuri+1);
{--------------------jos saatiin joku messun numero-------------------------}
{------------------lisätään etunollat ja haetaan file-----------------------}
if rrivi<>'' then
begin
if length(rrivi)<6 then
for f:=1 to 6-length(rrivi) do
rrivi:='0'+rrivi;
s:=fsearch('M_'+rrivi+'.MES',mailpath+'mail'+rrivi[6]+'\');
if s='' then writeln(vastaus,'Viestiä ',rrivi,' ei löydy !')
else
begin
assign(messu,fexpand(s));
reset(messu);
writeln(vastaus,'----- Viesti: #',rrivi,' ------');
{--------jos messu löytyi kopioidaan muut paitsi 'R:'-rivit vastaukseen----}
while not eof (messu) do
begin
readln(messu,mrivi);
if copy(mrivi,1,2)<>'R:' then
writeln(vastaus,mrivi);
end;
writeln(vastaus,'----------------------------');
writeln(vastaus);
writeln(vastaus);
writeln(vastaus);
close(messu);
end;
end;
end;
{----kunnes koko otsikkorivi on skannattu läpi ---------------------------}
until otsikko='';
close(vastaus);
{----jos vanha zip löytyy, tuhotaan se ------------------------------------}
S:=fsearch('!-'+kutsu+'.zip',vastpath);
if s<>'' then
begin
assign(messu,fexpand(s));
erase(messu);
end;
{----pakataan vastaus ja tuhotaan pakkaamaton vastaus----------------------}
S:=fsearch('pkzip.exe',getenv('path'));
if s<>'' then
begin
swapvectors;
exec(fexpand(s),'-m '+vastpath+'!-'+kutsu+' '+vastpath+'!-'+kutsu);
swapvectors;
end;
erase(requ);
end.